#include<stdio.h>

//普通的函数定义，x和y为形参，
int max(int x, int y){
    if(x > y){
        return x;
    }else{
        return y;
    }
}

//形参的生成，分为两种
//形参的生成1、值传递，形参就相当于函数的一个局部函数，调用函数时把实参复制给形参，函数结束后形参销毁
void swapValue(int x, int y){
    int temp;
    temp = x;
    x = y;
    y = temp;
    return ;
}

//形参的生成2、引用传递，形参内容是实参的地址，函数内部使用时，实际使用的是实参，如果有改变形参，实参也会跟着改变哦
void swapRefrence(int *x, int *y){
    printf("调用内的c地址：%x\r\n", x);
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
    return;
}

int main(){
    //10和20为实参
    printf("%d\n", max(10, 20));//output 20

    int a = 10;
    int b = 20;
    printf("调用前的a=%d, b=%d\n", a, b);//output 10 20
    swapValue(a, b);
    printf("调用后的a=%d, b=%d\n", a, b);//output 10 20

    int c = 10;
    int d = 20;
    printf("调用前的c=%d, d=%d\n", c, d);//output 10 20
    printf("调用前的c地址：%x\r\n", &c);
    swapRefrence(&c, &d);
    printf("调用后的c=%d, d=%d\n", c, d);//output 20 10
}
